package edu.szcu.cstms_admin.service;

import edu.szcu.cstms_admin.entity.UserInfo;
import java.util.List;

/**
 * 用户信息服务接口
 */
public interface UserInfoService {

    /**
     * 添加用户信息
     * @param userInfo 用户信息
     * @return 影响行数
     */
    int insert(UserInfo userInfo);

    /**
     * 根据ID查询用户信息
     * @param id 用户ID
     * @return 用户信息
     */
    UserInfo selectById(Long id);

    /**
     * 根据学号/工号查询用户信息
     * @param studentWorkerId 学号/工号
     * @return 用户信息
     */
    UserInfo selectByStudentWorkerId(String studentWorkerId);

    /**
     * 根据姓名查询用户信息
     * @param name 用户姓名
     * @return 用户信息
     */
    UserInfo selectByName(String name);

    /**
     * 查询所有用户信息
     * @return 用户信息列表
     */
    List<UserInfo> selectAll();

    /**
     * 根据学院查询用户信息
     * @param college 学院
     * @return 用户信息列表
     */
    List<UserInfo> selectByCollege(String college);

    /**
     * 更新用户信息
     * @param userInfo 用户信息
     * @return 影响行数
     */
    int update(UserInfo userInfo);

    /**
     * 根据ID删除用户信息
     * @param id 用户ID
     * @return 影响行数
     */
    int deleteById(Long id);

    /**
     * 根据学号/工号删除用户信息
     * @param studentWorkerId 学号/工号
     * @return 影响行数
     */
    int deleteByStudentWorkerId(String studentWorkerId);

    /**
     * 统计用户总数
     * @return 用户总数
     */
    int count();

    /**
     * 根据条件查询用户信息
     * @param userInfo 包含查询条件的用户信息对象
     * @return 用户信息列表
     */
    List<UserInfo> selectByCondition(UserInfo userInfo);

    /**
     * 用户登录验证
     * @param studentWorkerId 学号/工号
     * @param password 密码
     * @return 用户信息，登录失败返回null
     */
    UserInfo login(String studentWorkerId, String password);
}
